Skip to content

Conversation

@ayushtkn
Copy link
Member

@ayushtkn ayushtkn commented Jan 6, 2026

What changes were proposed in this pull request?

Add support for Iceberg Nanosecond Timestamp

Why are the changes needed?

To support the new V3 Nanosecond Timestamp

Does this PR introduce any user-facing change?

yes, users can create iceberg v3 table with nanosecond timestamp precession.

How was this patch tested?

UT + Docker With Iceberg master(Which includes bug fixes for multiple issues regarding nanosecond timestamp)

@ayushtkn ayushtkn changed the title [WIP] HIVE-29383: Iceberg: [V3] Add support for timestamp with nanosecond precession HIVE-29383: Iceberg: [V3] Add support for timestamp with nanosecond precession Jan 21, 2026
Comment on lines 506 to 518
} else if (params != null && params.length > 1) {
throw new IllegalArgumentException(
"Timestamp takes only one parameter, but " + params.length + " is seen");
}
return TypeInfoFactory.getTimestampTypeInfo(prec);
case TIMESTAMPLOCALTZ:
int precTimeZone = 6;
if (params != null && params.length == 1) {
precTimeZone = Integer.parseInt(params[0]);
} else if (params != null && params.length > 1) {
throw new IllegalArgumentException(
"Timestamp takes only one parameter, but " + params.length + " is seen");
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These lines are duplicated in 2 places in this block of code, should they be extracted into a helper method?

if (params != null && params.length > 1) {
  throw new IllegalArgumentException(
      "Timestamp takes only one parameter, but " + params.length + " is seen");
}

super(serdeConstants.TIMESTAMPLOCALTZ_TYPE_NAME);
this.timeZone = TimestampTZUtil.parseTimeZone(timeZoneStr);
if (precision != 6 && precision != 9) {
throw new RuntimeException("Unsupported value for precision: " + precision);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The same exception error message is reused in TimestampTypeInfo constructor, should we define a common error message in ErrorMsg for reuse?

Copy link
Contributor

@difin difin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM +1

Left 2 comments about some minor code duplication.

@sonarqubecloud
Copy link

@ayushtkn ayushtkn merged commit 748838a into apache:master Jan 22, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants